using Lzfy_Refund_Service.Models;

namespace Lzfy_Refund_Service.Services
{
    public interface IUserManagementService
    {
        Task<UserListResponse> GetUserListAsync(UserListRequest request);
        Task<UserDto?> GetUserByIdAsync(int id);
        Task<int> CreateUserAsync(UserDto userDto);
        Task<bool> UpdateUserAsync(int id, UserDto userDto);
        Task<bool> DeleteUserAsync(int id);
        Task<bool> ToggleUserStatusAsync(int id, bool isActive);
        Task<bool> ResetUserPasswordAsync(int id, string newPassword);
        Task<bool> AssignUserRolesAsync(int userId, List<int> roleIds);
        Task<List<UserRoleDto>> GetUserRolesAsync(int userId);
        Task<List<MenuDto>> GetUserPermissionsAsync(int userId);
    }
}